<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>apply_texture_inspection_model [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_inspection.html">Inspection</a> / <a href="toc_inspection_texture.html">Texture Inspection</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">apply_texture_inspection_model</span><span data-if="c" style="display:none;">T_apply_texture_inspection_model</span><span data-if="cpp" style="display:none;">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none;">ApplyTextureInspectionModel</span><span data-if="python" style="display:none;">apply_texture_inspection_model</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">apply_texture_inspection_model</span><span data-if="c" style="display:none;">T_apply_texture_inspection_model</span><span data-if="cpp" style="display:none;">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none;">ApplyTextureInspectionModel</span><span data-if="python" style="display:none;">apply_texture_inspection_model</span></code> — Inspection of the texture within an image.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>apply_texture_inspection_model</b>(<a href="#Image"><i>Image</i></a> : <a href="#NoveltyRegion"><i>NoveltyRegion</i></a> : <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a> : <a href="#TextureInspectionResultID"><i>TextureInspectionResultID</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_apply_texture_inspection_model</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#NoveltyRegion"><i>NoveltyRegion</i></a>, const Htuple <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>, Htuple* <a href="#TextureInspectionResultID"><i>TextureInspectionResultID</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>ApplyTextureInspectionModel</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, HObject* <a href="#NoveltyRegion"><i>NoveltyRegion</i></a>, const HTuple&amp; <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>, HTuple* <a href="#TextureInspectionResultID"><i>TextureInspectionResultID</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>ApplyTextureInspectionModel</b>(const HTextureInspectionModel&amp; <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>, HTextureInspectionResult* <a href="#TextureInspectionResultID"><i>TextureInspectionResultID</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>::<b>ApplyTextureInspectionModel</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, HTextureInspectionResult* <a href="#TextureInspectionResultID"><i>TextureInspectionResultID</i></a>) const</code></p>
<p>
<code>void <a href="HTextureInspectionResult.html">HTextureInspectionResult</a>::<b>HTextureInspectionResult</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, HRegion* <a href="#NoveltyRegion"><i>NoveltyRegion</i></a>, const HTextureInspectionModel&amp; <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HTextureInspectionResult.html">HTextureInspectionResult</a>::<b>ApplyTextureInspectionModel</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, const HTextureInspectionModel&amp; <a href="#TextureInspectionModel"><i>TextureInspectionModel</i></a>)</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>ApplyTextureInspectionModel</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, out <a href="HObject.html">HObject</a> <a href="#NoveltyRegion"><i>noveltyRegion</i></a>, <a href="HTuple.html">HTuple</a> <a href="#TextureInspectionModel"><i>textureInspectionModel</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#TextureInspectionResultID"><i>textureInspectionResultID</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>.<b>ApplyTextureInspectionModel</b>(<a href="HTextureInspectionModel.html">HTextureInspectionModel</a> <a href="#TextureInspectionModel"><i>textureInspectionModel</i></a>, out <a href="HTextureInspectionResult.html">HTextureInspectionResult</a> <a href="#TextureInspectionResultID"><i>textureInspectionResultID</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HTextureInspectionModel.html">HTextureInspectionModel</a>.<b>ApplyTextureInspectionModel</b>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>, out <a href="HTextureInspectionResult.html">HTextureInspectionResult</a> <a href="#TextureInspectionResultID"><i>textureInspectionResultID</i></a>)</code></p>
<p>
<code>public <a href="HTextureInspectionResult.html">HTextureInspectionResult</a>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>, out <a href="HRegion.html">HRegion</a> <a href="#NoveltyRegion"><i>noveltyRegion</i></a>, <a href="HTextureInspectionModel.html">HTextureInspectionModel</a> <a href="#TextureInspectionModel"><i>textureInspectionModel</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HTextureInspectionResult.html">HTextureInspectionResult</a>.<b>ApplyTextureInspectionModel</b>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>, <a href="HTextureInspectionModel.html">HTextureInspectionModel</a> <a href="#TextureInspectionModel"><i>textureInspectionModel</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>apply_texture_inspection_model</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#TextureInspectionModel"><i>texture_inspection_model</i></a>: HHandle) -&gt; Tuple[HObject, HHandle]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code> compares
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> with the trained texture inspection model
<a href="#TextureInspectionModel"><i><code><span data-if="hdevelop" style="display:inline">TextureInspectionModel</span><span data-if="c" style="display:none">TextureInspectionModel</span><span data-if="cpp" style="display:none">TextureInspectionModel</span><span data-if="com" style="display:none">TextureInspectionModel</span><span data-if="dotnet" style="display:none">textureInspectionModel</span><span data-if="python" style="display:none">texture_inspection_model</span></code></i></a>. <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> can either be a single
image or a tuple of images. It is possible to pass either gray-scale
or multichannel images. Hereby, 该算子 expects that the passed
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> has the same number of channels than the model was trained
with. The runtime of the <code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code> scales
roughly linearly with the number of image channels. However, models
using colored images are generally better at detecting colored
texture defects.
</p>
<p>Pixels that do not fit to the texture inspection model are returned
in <a href="#NoveltyRegion"><i><code><span data-if="hdevelop" style="display:inline">NoveltyRegion</span><span data-if="c" style="display:none">NoveltyRegion</span><span data-if="cpp" style="display:none">NoveltyRegion</span><span data-if="com" style="display:none">NoveltyRegion</span><span data-if="dotnet" style="display:none">noveltyRegion</span><span data-if="python" style="display:none">novelty_region</span></code></i></a>. Furthermore, if <i><span data-if="hdevelop" style="display:inline">'gen_result_handle'</span><span data-if="c" style="display:none">"gen_result_handle"</span><span data-if="cpp" style="display:none">"gen_result_handle"</span><span data-if="com" style="display:none">"gen_result_handle"</span><span data-if="dotnet" style="display:none">"gen_result_handle"</span><span data-if="python" style="display:none">"gen_result_handle"</span></i> has
been set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i> with <a href="set_texture_inspection_model_param.html"><code><span data-if="hdevelop" style="display:inline">set_texture_inspection_model_param</span><span data-if="c" style="display:none">set_texture_inspection_model_param</span><span data-if="cpp" style="display:none">SetTextureInspectionModelParam</span><span data-if="com" style="display:none">SetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">SetTextureInspectionModelParam</span><span data-if="python" style="display:none">set_texture_inspection_model_param</span></code></a>,
该算子 also returns the result handle
<a href="#TextureInspectionResultID"><i><code><span data-if="hdevelop" style="display:inline">TextureInspectionResultID</span><span data-if="c" style="display:none">TextureInspectionResultID</span><span data-if="cpp" style="display:none">TextureInspectionResultID</span><span data-if="com" style="display:none">TextureInspectionResultID</span><span data-if="dotnet" style="display:none">textureInspectionResultID</span><span data-if="python" style="display:none">texture_inspection_result_id</span></code></i></a> with more detailed information on
the texture classification. If <i><span data-if="hdevelop" style="display:inline">'gen_result_handle'</span><span data-if="c" style="display:none">"gen_result_handle"</span><span data-if="cpp" style="display:none">"gen_result_handle"</span><span data-if="com" style="display:none">"gen_result_handle"</span><span data-if="dotnet" style="display:none">"gen_result_handle"</span><span data-if="python" style="display:none">"gen_result_handle"</span></i> is
set to <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>, <a href="#TextureInspectionResultID"><i><code><span data-if="hdevelop" style="display:inline">TextureInspectionResultID</span><span data-if="c" style="display:none">TextureInspectionResultID</span><span data-if="cpp" style="display:none">TextureInspectionResultID</span><span data-if="com" style="display:none">TextureInspectionResultID</span><span data-if="dotnet" style="display:none">textureInspectionResultID</span><span data-if="python" style="display:none">texture_inspection_result_id</span></code></i></a> is empty.
</p>
<p>For an explanation of the concept of the texture inspection
see the introduction of chapter <a href="toc_inspection_texture.html">Inspection / Texture Inspection</a>.
</p>
<p>For each pyramid level texture features are extracted and classified
with the corresponding GMM classifier. The resulting novelty score is
then compared to
the novelty threshold of the current pyramid level and classified as
defective or not. The defective pixels are collected in a novelty region for
each pyramid level. These novelty regions are then combined to the
final novelty region returned in <a href="#NoveltyRegion"><i><code><span data-if="hdevelop" style="display:inline">NoveltyRegion</span><span data-if="c" style="display:none">NoveltyRegion</span><span data-if="cpp" style="display:none">NoveltyRegion</span><span data-if="com" style="display:none">NoveltyRegion</span><span data-if="dotnet" style="display:none">noveltyRegion</span><span data-if="python" style="display:none">novelty_region</span></code></i></a>. The novelty
regions of adjacent levels in the image pyramid are intersected with each
other. This step helps to improve the robustness towards noise within the
single pyramid level responses. The intersected novelty regions are then
added to the returned <i><span data-if="hdevelop" style="display:inline">'novelty_region'</span><span data-if="c" style="display:none">"novelty_region"</span><span data-if="cpp" style="display:none">"novelty_region"</span><span data-if="com" style="display:none">"novelty_region"</span><span data-if="dotnet" style="display:none">"novelty_region"</span><span data-if="python" style="display:none">"novelty_region"</span></i>. If a pyramid level has no
adjacent pyramid level the region itself is added to the
<i><span data-if="hdevelop" style="display:inline">'novelty_region'</span><span data-if="c" style="display:none">"novelty_region"</span><span data-if="cpp" style="display:none">"novelty_region"</span><span data-if="com" style="display:none">"novelty_region"</span><span data-if="dotnet" style="display:none">"novelty_region"</span><span data-if="python" style="display:none">"novelty_region"</span></i>. If, for example, <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i> is set to 1,
no adjacent pyramid level exists and the <i><span data-if="hdevelop" style="display:inline">'novelty_region'</span><span data-if="c" style="display:none">"novelty_region"</span><span data-if="cpp" style="display:none">"novelty_region"</span><span data-if="com" style="display:none">"novelty_region"</span><span data-if="dotnet" style="display:none">"novelty_region"</span><span data-if="python" style="display:none">"novelty_region"</span></i> is the
novelty region of the first pyramid level.
</p>
<p>If <i><span data-if="hdevelop" style="display:inline">'gen_result_handle'</span><span data-if="c" style="display:none">"gen_result_handle"</span><span data-if="cpp" style="display:none">"gen_result_handle"</span><span data-if="com" style="display:none">"gen_result_handle"</span><span data-if="dotnet" style="display:none">"gen_result_handle"</span><span data-if="python" style="display:none">"gen_result_handle"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, the result handle
<a href="#TextureInspectionResultID"><i><code><span data-if="hdevelop" style="display:inline">TextureInspectionResultID</span><span data-if="c" style="display:none">TextureInspectionResultID</span><span data-if="cpp" style="display:none">TextureInspectionResultID</span><span data-if="com" style="display:none">TextureInspectionResultID</span><span data-if="dotnet" style="display:none">textureInspectionResultID</span><span data-if="python" style="display:none">texture_inspection_result_id</span></code></i></a> contains
novelty score images and the resulting novelty regions for each pyramid level.
</p>
<p>This information is useful for debugging and fine tuning of the model
parameters (e.g., the novelty thresholds) and can be accessed with
<a href="get_texture_inspection_result_object.html"><code><span data-if="hdevelop" style="display:inline">get_texture_inspection_result_object</span><span data-if="c" style="display:none">get_texture_inspection_result_object</span><span data-if="cpp" style="display:none">GetTextureInspectionResultObject</span><span data-if="com" style="display:none">GetTextureInspectionResultObject</span><span data-if="dotnet" style="display:none">GetTextureInspectionResultObject</span><span data-if="python" style="display:none">get_texture_inspection_result_object</span></code></a>.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<p>This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.</p>
<p>This operator modifies the state of the following input parameter:</p>
<ul><li><a href="#TextureInspectionResultID"><span data-if="hdevelop" style="display:inline">TextureInspectionResultID</span><span data-if="c" style="display:none">TextureInspectionResultID</span><span data-if="cpp" style="display:none">TextureInspectionResultID</span><span data-if="com" style="display:none">TextureInspectionResultID</span><span data-if="dotnet" style="display:none">textureInspectionResultID</span><span data-if="python" style="display:none">texture_inspection_result_id</span></a></li></ul>
<p>During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>(multichannel-)image-array <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2 / real)</span>
</div>
<p class="pardesc">Image of the texture to be inspected.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NoveltyRegion" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NoveltyRegion</span><span data-if="c" style="display:none">NoveltyRegion</span><span data-if="cpp" style="display:none">NoveltyRegion</span><span data-if="com" style="display:none">NoveltyRegion</span><span data-if="dotnet" style="display:none">noveltyRegion</span><span data-if="python" style="display:none">novelty_region</span></code></b> (output_object)  </span><span>region-array <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="c" style="display:none">Hobject *</span></span>
</div>
<p class="pardesc">Novelty regions.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="TextureInspectionModel" class="parname"><b><code><span data-if="hdevelop" style="display:inline">TextureInspectionModel</span><span data-if="c" style="display:none">TextureInspectionModel</span><span data-if="cpp" style="display:none">TextureInspectionModel</span><span data-if="com" style="display:none">TextureInspectionModel</span><span data-if="dotnet" style="display:none">textureInspectionModel</span><span data-if="python" style="display:none">texture_inspection_model</span></code></b> (input_control)  </span><span>texture_inspection_model <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTextureInspectionModel.html">HTextureInspectionModel</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the texture inspection model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="TextureInspectionResultID" class="parname"><b><code><span data-if="hdevelop" style="display:inline">TextureInspectionResultID</span><span data-if="c" style="display:none">TextureInspectionResultID</span><span data-if="cpp" style="display:none">TextureInspectionResultID</span><span data-if="com" style="display:none">TextureInspectionResultID</span><span data-if="dotnet" style="display:none">textureInspectionResultID</span><span data-if="python" style="display:none">texture_inspection_result_id</span></code></b> (output_control, state is modified)  </span><span>texture_inspection_result <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTextureInspectionResult.html">HTextureInspectionResult</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the inspection results.</p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Create texture inspection model
create_texture_inspection_model ('basic', TextureInspectionModel)
* Set parameters
set_texture_inspection_model_param (TextureInspectionModel, \
                                    'gen_result_handle', 'true')
* Make this short example fast:
set_texture_inspection_model_param (TextureInspectionModel, \
                                    'gmm_em_max_iter', 1)
* Read and add training images
read_image (TrainImage, 'carpet/carpet_01')
add_texture_inspection_model_image (TrainImage, TextureInspectionModel, \
                                    Indices)
* Train the model
train_texture_inspection_model (TextureInspectionModel)
* Read and apply a test image
read_image (TestImage, 'carpet/carpet_02')
apply_texture_inspection_model (TestImage, DefectCandidates, \
                                TextureInspectionModel, \
                                TextureInspectionResultID)
</pre>
<h2 id="sec_result">结果</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">apply_texture_inspection_model</span><span data-if="c" style="display:none">apply_texture_inspection_model</span><span data-if="cpp" style="display:none">ApplyTextureInspectionModel</span><span data-if="com" style="display:none">ApplyTextureInspectionModel</span><span data-if="dotnet" style="display:none">ApplyTextureInspectionModel</span><span data-if="python" style="display:none">apply_texture_inspection_model</span></code> 返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    
if the given parameters are valid and within acceptable range.
Otherwise, an exception will be raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="train_texture_inspection_model.html"><span data-if="hdevelop" style="display:inline">train_texture_inspection_model</span><span data-if="c" style="display:none">train_texture_inspection_model</span><span data-if="cpp" style="display:none">TrainTextureInspectionModel</span><span data-if="com" style="display:none">TrainTextureInspectionModel</span><span data-if="dotnet" style="display:none">TrainTextureInspectionModel</span><span data-if="python" style="display:none">train_texture_inspection_model</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="get_texture_inspection_result_object.html"><span data-if="hdevelop" style="display:inline">get_texture_inspection_result_object</span><span data-if="c" style="display:none">get_texture_inspection_result_object</span><span data-if="cpp" style="display:none">GetTextureInspectionResultObject</span><span data-if="com" style="display:none">GetTextureInspectionResultObject</span><span data-if="dotnet" style="display:none">GetTextureInspectionResultObject</span><span data-if="python" style="display:none">get_texture_inspection_result_object</span></a></code>, 
<code><a href="get_texture_inspection_model_param.html"><span data-if="hdevelop" style="display:inline">get_texture_inspection_model_param</span><span data-if="c" style="display:none">get_texture_inspection_model_param</span><span data-if="cpp" style="display:none">GetTextureInspectionModelParam</span><span data-if="com" style="display:none">GetTextureInspectionModelParam</span><span data-if="dotnet" style="display:none">GetTextureInspectionModelParam</span><span data-if="python" style="display:none">get_texture_inspection_model_param</span></a></code>, 
<code><a href="clear_texture_inspection_result.html"><span data-if="hdevelop" style="display:inline">clear_texture_inspection_result</span><span data-if="c" style="display:none">clear_texture_inspection_result</span><span data-if="cpp" style="display:none">ClearTextureInspectionResult</span><span data-if="com" style="display:none">ClearTextureInspectionResult</span><span data-if="dotnet" style="display:none">ClearTextureInspectionResult</span><span data-if="python" style="display:none">clear_texture_inspection_result</span></a></code>, 
<code><a href="clear_texture_inspection_model.html"><span data-if="hdevelop" style="display:inline">clear_texture_inspection_model</span><span data-if="c" style="display:none">clear_texture_inspection_model</span><span data-if="cpp" style="display:none">ClearTextureInspectionModel</span><span data-if="com" style="display:none">ClearTextureInspectionModel</span><span data-if="dotnet" style="display:none">ClearTextureInspectionModel</span><span data-if="python" style="display:none">clear_texture_inspection_model</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Matching</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
